package com.systop.asset.service.impl;

import java.util.List;

import com.systop.asset.entity.DeptUser;
import com.systop.asset.mapper.DeptUserMapper;
import com.systop.asset.mapper.UserMapper;
import com.systop.asset.service.IUserService;
import com.systop.asset.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

/**
 * 系统用户基础信息Service业务层处理
 * 
 * @date 2025-06-20
 */
@Service
public class UserServiceImpl implements IUserService
{
    @Autowired
    private UserMapper userMapper;

    @Autowired
    PasswordEncoder passwordEncoder;


    @Autowired
    private DeptUserMapper deptUserMapper;
    /**
     * 查询系统用户基础信息
     * 
     * @param id 系统用户基础信息主键
     * @return 系统用户基础信息
     */
    @Override
    public User selectUserById(Long id)
    {
        return userMapper.selectUserById(id);
    }

    /**
     * 查询系统用户基础信息
     *
     * @param username 系统用户名称
     * @return 系统用户基础信息
     */
    @Override
    public User selectUserByUsername(String username)
    {
        return userMapper.selectUserByUsername(username);
    }
    /**
     * 查询系统用户基础信息列表
     * 
     * @param user 系统用户基础信息
     * @return 系统用户基础信息
     */
    @Override
    public List<User> selectUserList(User user)
    {
        return userMapper.selectUserList(user);
    }

    /**
     * 新增系统用户基础信息
     * 
     * @param user 系统用户基础信息
     * @return 结果
     */
    @Override
    public int insertUser(User user)
    {
        String encode = passwordEncoder.encode(user.getPassword());
        user.setPassword(encode);
        int ret = userMapper.insertUser(user);
        if (user.getDepartments() != null && user.getDepartments().size() > 0) {
            for (int i = 0; i < user.getDepartments().size(); i++) {
                DeptUser deptUser = new DeptUser();
                deptUser.setDeptId(user.getDepartments().get(i).getId());
                deptUser.setUserId(user.getId());
                deptUserMapper.insertDeptUser(deptUser);
            }
        }

        return ret;
    }

    /**
     * 修改系统用户基础信息
     * 
     * @param user 系统用户基础信息
     * @return 结果
     */
    @Override
    public int updateUser(User user)
    {

        deptUserMapper.deleteDeptUserByUserId(user.getId());
        if (user.getDepartments() != null && user.getDepartments().size() > 0) {
            for (int i = 0; i < user.getDepartments().size(); i++) {
                DeptUser deptUser = new DeptUser();
                deptUser.setDeptId(user.getDepartments().get(i).getId());
                deptUser.setUserId(user.getId());
                deptUserMapper.insertDeptUser(deptUser);
            }
        }

        return userMapper.updateUser(user);
    }

    /**
     * 批量删除系统用户基础信息
     * 
     * @param ids 需要删除的系统用户基础信息主键
     * @return 结果
     */
    @Override
    public int deleteUserByIds(Long[] ids)
    {
        return userMapper.deleteUserByIds(ids);
    }

    /**
     * 删除系统用户基础信息信息
     * 
     * @param id 系统用户基础信息主键
     * @return 结果
     */
    @Override
    public int deleteUserById(Long id)
    {
        return userMapper.deleteUserById(id);
    }
}
